package com.example.platine.activity;

import java.util.ArrayList;

import android.content.Intent;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.example.platine.model.User;
import com.example.platine.serveur.UserServeur;

/**
 * 
 * @author Victor Paumier / Claude Saint-Georges / Tung Nguyen
 * 
 * ParamsFragment est le fragment 
 * permet de régler les paramètres utilisateurs
 */
public class ParamsFragment extends ListFragment {

	private ArrayList<String> list = new ArrayList<String>();
	private boolean firstLaunch = true ;
	private User user ;

	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);
		setHasOptionsMenu(true);
		//initialisation de la liste
		init() ;
	}

	//ajout du bouton menu de rafraichissement
	public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
		super.onCreateOptionsMenu(menu, inflater);
		inflater.inflate(R.menu.refresh, menu) ;
	}
	
	@Override
	public void onResume(){
		super.onResume();
		firstLaunch = true;
		this.init();
	}

	//réinitialisé la liste quand le bouton de rafraichissement est pressé
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.menu_refresh :
			firstLaunch = true;
			this.init();
			break ;
		}
		return true ;
	}


	private void init(){
		//si c'est le premier lancement
		if(firstLaunch){
			//creation d'une nouvelle arraylist pour stocker les lignes
			list = new ArrayList<String>() ;
			//verifier user courant
			checkCompte();
			//verifier sonnerie
			getCurrentSonnerie() ;
			//verifier durée de la répétition
			getDureeRepetition() ;
			//ajouter bouton actions
			list.add("Actions") ;

			//configuration de l'affichage de la liste
			ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity().getBaseContext(), android.R.layout.simple_list_item_1, list) ;
			setListAdapter(adapter);

			firstLaunch = false ;
		}
	}

	//actions de click sur la liste 
	@Override
	public void onListItemClick(ListView l, View v, final int position, long id) {
		//préparation de l'intent
		Intent intent = new Intent();
		intent.putExtra("USER", user);


		switch (position) {
		//le click sur le user ne fait rien
		case 0:
			break;

			//click sur la sonnerie lance l'activité sonnerie
		case 1:
			intent.setClass(getActivity(), SonnerieActivity.class);
			startActivity(intent);
			break;

			//click sur repetition lance l'activité repetition
		case 2:
			intent.setClass(getActivity(), RepetitionActivity.class);
			startActivity(intent);
			break;

			//click sur action lance l'activité ActionAutorisees
		case 3:
			intent.setClass(getActivity(), ActionAutoriseesActivity.class);
			startActivity(intent);
			break;

		default:
			break;
		}

		firstLaunch = true;
	}

	//verification du compte utilisateur
	private void checkCompte() {
		User u = new UserServeur().getCurrentUser(getActivity()) ;

		//si le user a bien été récupérer
		if(u != null){
			//stock le user et affiche son nom
			user = u ;
			list.add(u.getMail().substring(0, u.getMail().indexOf("@"))) ;
		}
		//sinon ajoute un message
		else{
			list.add("Veuillez enregistrer un compte google dans votre telephone") ;
		}
	}

	private void getCurrentSonnerie() { 
		//si le user existe et a une sonnerie
		if (user != null && user.getSonnerie() != null &&user.getSonnerie().length() > 1){
			Ringtone ringtone = RingtoneManager.getRingtone(getActivity(), Uri.parse(user.getSonnerie()));
			//ajout le nom de la sonnerie
			list.add("Sonnerie : " + ringtone.getTitle(getActivity())) ;
		}else{
			//sinon ajoute un message
			list.add("Aucune sonnerie nest definie") ;
		}
	}

	private void getDureeRepetition() {
		if(user != null){
			//affiche la durée de la répétition
			list.add("Duree de la repetition : " + user.getRepeter() + " min") ;
		}else{
			//sinon ajoute un message
			list.add("Aucune duree nest definie") ;
		}
	}

}
